1. Field of the Invention
The present invention relates generally to an improved data processing system and in particular to a method and apparatus for processing data. Still more particularly, the present invention relates to a computer implemented method, apparatus, and computer usable program code for obtaining data for use in analyzing idle states in a data processing system.
2. Description of the Related Art
In writing code, runtime analysis of the code is often performed as part of an optimization process. Runtime analysis is used to understand the behavior of components or modules within the code using data collected during the execution of the code. The analysis of the data collected may provide insight to various potential misbehaviors in the code. For example, an understanding of execution paths, code coverage, memory utilization, memory errors and memory leaks in native applications, performance bottlenecks, and threading problems are examples of aspects that may be identified through analyzing the code during execution.
The performance characteristics of code may be identified using a software performance analysis tool. The identification of the different characteristics may be based on a trace facility of a trace system. A trace tool may be used using various techniques to provide information, such as execution flows as well as other aspects of an executing program. A trace may contain data about the execution of code. For example, a trace may contain trace records about events generated during the execution of the code. A trace also may include information, such as, a process identifier, a thread identifier, and a program counter. Information in the trace may vary depending on the particular profile or analysis that is to be performed. A record is a unit of information relating to an event that is detected during the execution of the code.
One part of analyzing the performance of a system involves identifying the reasons that a processor is busy or idle. In a symmetric multi-processor system, an inability to adjust a workload to keep all of the processors busy limits the scalability of the system. Complex applications, such as Web servers and other E-Commerce applications require an understanding as to why these applications are not fully utilizing the available processor cycles.
Information useful in identifying reasons that a processor is busy or idle includes information from call stacks for the different threads that are being executed in a multi-processor system. Current techniques for obtaining this information involve waking a process periodically to obtain all of the threads present and determine the status of these threads.
It would be advantageous to have an improved computer implemented method, apparatus, and computer usable program code for obtaining call stack information from threads.